1. Field of the Invention
The present invention relates to accessible user interface elements in a computer program and more particularly to accessible forms of list navigation in a user interface.
2. Description of the Related Art
Prior to the popularization of the Internet and the subsequent implementation of the World Wide Web (“the Web”), software publishers typically distributed computer applications via storage media such as a computer diskette or compact disc. Initially, such stand-alone computer applications included underlying program logic, data storage and, optionally, a user interface. Recently, given the popularization of the Internet and the Web, it is no longer reasonable to presume that computer applications are distributed exclusively via disk medium. Rather, in many cases, conventional computer programs are distributed electronically via the Internet. More importantly, however, in many cases computer applications are no longer distributed as stand-alone executable programs. Rather, many computer applications are distributed as markup language specified, browser based applications which can include a collection of hypermedia documents such as Web pages which can be viewed in hypermedia content browsers such as Web browsers.
In the case of a markup language specified computer program, users can interact with the underlying program logic not through a traditional GUI, but through a GUI provided by GUI elements embedded in a hypermedia document displayed in a content browser. Conventional markup can specify a user interface and corresponding logic which can be processed and rendered through use of a content browser. Content browsers process display attributes embedded in markup to properly format content also contained within the markup. Notable variants of the content browser include the venerable Web browser, as well as the more recent extensible markup language (XML) browser. Regardless of the type of browser, all conventional markup processors are preconfigured to parse and interpret attribute tags embedded in markup.
For more than ten years, computer scientists and engineers have addressed the accessibility of the computer program user interface—particularly for the benefit of those end users whose working conditions or disability status [SMG1] make them unable to interact with a computer program utilizing conventional means such as a mouse or keyboard. Presently, several assistive technologies have been widely distributed, usually in concert with the distribution of an operating system, to provide one or more alternative user interface mechanisms for the purpose of enhanced accessibility. Examples of assistive technologies include an audio user interface such as a screen reader.
Assistive technologies have proven to be highly successful among visually challenged computing end users. Still, assistive technologies have not yet adapted to the underlying changes in respect to the modern form of the computer program. Specifically, whereas in a conventionally distributed computer program, assistive technologies like the screen reader can be easily enabled, markup language specified computer programs have not yet enjoyed the comprehensive integration of assistive technologies, especially concerning the functional (in-use) accessibility of complex displays or user interface structural elements.
Often, within a user interface, it is necessary to present a long list to a user such that the user can inspect or select one or more items from a list. Examples include buddy lists, e-mail contact lists, font lists, parts lists, book lists and executable items on a pull-down menu. Clearly, a longer list containing a multiplicity of items can be difficult for even an able-bodied user to navigate. For the disabled, the problem is much worse. To address the problem of accessibility of a list in a user interface, many technologies have been proposed, including twisties for sublists and the bolding or highlighting of landmark entries in a list such as the first entry in the list which begins with a new letter as follows: *apples*, apricots, artichokes, *bananas*, beets, *carrots*, cucumbers, . . . , *tomatoes*.
As an alternative to modifying the appearance of individual items in a list, it has been proposed to truncate lists to include only the most frequently selected items. By presenting a truncated form of the list, sighted users can more readily review the items in a list. Of course, for a sight impaired individual, the truncation actually exacerbates the problem. Specifically, sight impaired users often memorize keystroke counts to select an item in a list. A typical memorized selection sequence can include, “Strike the Down Arrow key four times and the Enter key once” (whereas a user with unimpaired vision would use visual cues to navigate the list). To change the sequence or order of items in a list, then, can disorient a sight impaired user.
Regardless of the deficiencies of current dynamic solutions to the list navigation problem, dynamic implementations of markup languages and scripting aspects of markup languages, such as the popular dynamic hypertext markup language (DHTML) cannot always support important aspects of assistive technologies such as precise user interface element focus establishment. Consequently, even the most clever of assistive methodologies for navigating lists cannot be readily translated to the markup language defined user interface domain.